#pragma once

#include "Alice/ECS/System.hpp"
#include "Alice/Resource/Shader.h"
#include "Alice/Window/WindowInfo.hpp"
#include "Alice/Graphs/Brush.h"

namespace Alice
{

/*
    可视化盒子系统
    将实体的 Transform 信息可视化
    此系统关注的组件：Transform
*/
class VisualBoxSys : public System
{
public:
    inline void SetShader(Shader& shader) { m_brush.SetShader(shader); }
    inline Shader& GetShader() { return m_brush.GetShader(); }
    inline void SetWindowInfo(WindowInfo& window_info) { m_window_info = window_info; }

private:
    void Before();
    void OnUpdate();
    void After();

    unsigned int m_VAO;
    unsigned int m_VBO;

    Brush m_brush;
    WindowInfo m_window_info;
};

} // namespace Alice
